home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / front.lha / front / m2c / Character.c < prev    next >
C/C++ Source or Header  |  1992-08-18  |  2KB  |  114 lines

  1. #include "SYSTEM_.h"
  2.  
  3. #ifndef DEFINITION_Character
  4. #include "Character.h"
  5. #endif
  6.  
  7.  
  8.  
  9.  
  10. BOOLEAN Character_IsEqual
  11. # ifdef __STDC__
  12. (CHAR c1[], LONGCARD O_2, CHAR c2[], LONGCARD O_1)
  13. # else
  14. (c1, O_2, c2, O_1)
  15. CHAR c1[];
  16. LONGCARD O_2;
  17. CHAR c2[];
  18. LONGCARD O_1;
  19. # endif
  20. {
  21.   CARDINAL pos;
  22.   CARDINAL len;
  23.   OPEN_ARRAY_LOCALS
  24.  
  25.   ALLOC_OPEN_ARRAYS(O_1 * sizeof(CHAR) + O_2 * sizeof(CHAR), 2)
  26.   COPY_OPEN_ARRAY(c2, O_1, CHAR)
  27.   COPY_OPEN_ARRAY(c1, O_2, CHAR)
  28.   pos = 0;
  29.   len = Character_Length(c1, O_2);
  30.   if (len != Character_Length(c2, O_1)) {
  31.     FREE_OPEN_ARRAYS
  32.     return FALSE;
  33.   }
  34.   pos = 0;
  35.   for (;;) {
  36.     if (pos >= len) {
  37.       goto EXIT_1;
  38.     }
  39.     if (c1[pos] != c2[pos]) {
  40.       goto EXIT_1;
  41.     }
  42.     INC(pos);
  43.   } EXIT_1:;
  44.   FREE_OPEN_ARRAYS
  45.   return pos == len;
  46. }
  47.  
  48. CARDINAL Character_Length
  49. # ifdef __STDC__
  50. (CHAR c[], LONGCARD O_3)
  51. # else
  52. (c, O_3)
  53. CHAR c[];
  54. LONGCARD O_3;
  55. # endif
  56. {
  57.   CARDINAL len;
  58.   OPEN_ARRAY_LOCALS
  59.  
  60.   ALLOC_OPEN_ARRAYS(O_3 * sizeof(CHAR), 1)
  61.   COPY_OPEN_ARRAY(c, O_3, CHAR)
  62.   len = 0;
  63.   for (;;) {
  64.     if (len > (O_3 - 1)) {
  65.       goto EXIT_2;
  66.     }
  67.     if (c[len] == '\0') {
  68.       goto EXIT_2;
  69.     }
  70.     INC(len);
  71.   } EXIT_2:;
  72.   FREE_OPEN_ARRAYS
  73.   return len;
  74. }
  75.  
  76. void Character_Assign
  77. # ifdef __STDC__
  78. (CHAR s1[], LONGCARD O_4, CHAR s2[], LONGCARD O_5)
  79. # else
  80. (s1, O_4, s2, O_5)
  81. CHAR s1[];
  82. LONGCARD O_4;
  83. CHAR s2[];
  84. LONGCARD O_5;
  85. # endif
  86. {
  87.   CARDINAL i;
  88.   OPEN_ARRAY_LOCALS
  89.  
  90.   ALLOC_OPEN_ARRAYS(O_5 * sizeof(CHAR), 1)
  91.   COPY_OPEN_ARRAY(s2, O_5, CHAR)
  92.   {
  93.     LONGCARD B_1 = 0, B_2 = Character_Length(s2, O_5);
  94.  
  95.     if (B_1 <= B_2)
  96.       for (i = B_1;; i += 1) {
  97.         s1[i] = s2[i];
  98.         if (i >= B_2) break;
  99.       }
  100.   }
  101.   FREE_OPEN_ARRAYS
  102. }
  103.  
  104. void BEGIN_Character()
  105. {
  106.   static BOOLEAN has_been_called = FALSE;
  107.  
  108.   if (!has_been_called) {
  109.     has_been_called = TRUE;
  110.  
  111.  
  112.   }
  113. }
  114.